package com.delio.server.contabilidad.proveedores;

import java.sql.SQLException;
import java.util.List;

import com.delio.client.contabilidad.proveedores.Proveedor;
import com.delio.server.base.Conexion;
import com.delio.server.base.util.GxtGridPaginate;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;

public class Proveedores {
private static SqlMapClient sqlMap=null;

public static Integer errorCode = 0;



@SuppressWarnings("unchecked")
public static PagingLoadResult<Proveedor> getPaginate(
		GxtGridPaginate paginate, String filter) {

	sqlMap = Conexion.getSqlMap();

	paginate.setLimit();

	if (paginate.order.equals(""))
		paginate.order = " order by p.id desc";

	if (filter != null)
		paginate.condition = " and dni ILIKE '%" + filter + "%' OR ruc ILIKE '%" + filter
				+ "%' OR razonsocial ILIKE '%" + filter + "%' OR nombrecomercial ILIKE '%"+filter+"%'" ;

	List<Proveedor> data = null;
	try {
		data = sqlMap.queryForList("paginateProveedor", paginate);
	} catch (SQLException e) {
		e.printStackTrace();

	}
	return new BasePagingLoadResult<Proveedor>(data, paginate.offset,
			count(paginate));

}

private static Integer count(GxtGridPaginate paginate) {
	Integer cont = null;
	try {
		cont = (Integer) sqlMap.queryForObject("countProveedor");

	} catch (SQLException e) {
		e.printStackTrace();
	}
	return cont;
}

public static boolean save(Proveedor pro) {
	sqlMap = Conexion.getSqlMap();
	boolean respuesta = true;
	try {

		if (pro.getId() != null) 
			sqlMap.update("updateProveedor", pro);

		 else 
			sqlMap.insert("insertProveedor", pro);

	} catch (SQLException e) {
		if (e.getSQLState().equalsIgnoreCase("23505"))
			errorCode = 2;
		else
			e.printStackTrace();

		respuesta = false;
	}

	return respuesta;
}


public static boolean delete(Integer id) {

	boolean respuesta = true;

	sqlMap = Conexion.getSqlMap();
	try {
		if (id != null)
			sqlMap.delete("deleteProveedor", id);
		else
			respuesta = false;
			
		

	} catch (SQLException e) {
		 if (e.getSQLState().equalsIgnoreCase("23503"))
		 errorCode = 1;
		 else
		e.printStackTrace();

		respuesta = false;

	}
	return respuesta;

}

public static boolean deleteAll(String ids) {
	boolean respuesta = true;

	sqlMap = Conexion.getSqlMap();
	try {
		if (!ids.equals(""))
			sqlMap.delete("deleteAllProveedor", ids);
		else
			respuesta = false;

	} catch (SQLException e) {

		if (e.getSQLState().equalsIgnoreCase("23503"))
			errorCode = 1;
		else
			e.printStackTrace();

		respuesta = false;

	}
	return respuesta;

}

}
